package com.alks.function.service.finance.mtlcosts;

import com.alks.entity.data.entity.PcApAmtFk;
import com.alks.entity.data.page.PageParam;
import com.alks.entity.data.response.ResponseInfo;
import com.alks.function.data.request.finance.ryfinance.ApAmtHeadRequest;
import com.alks.function.data.vo.finance.ryfinance.ApAmtDetailVO;

import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @author MS
 * @since 2024/7/12下午6:32
 */
public interface IAllApAmtService {
    /**
     * 结算资料查询 - 分页可条件查询
     * @param request 查询条件
     * @return 结算资料主表
     */
    ResponseInfo tempQuery(ApAmtHeadRequest request);

    /**
     * 结算资料查询导出
     * @param request 查询条件
     * @param response
     */
    void tempQueryExport(ApAmtHeadRequest request, HttpServletResponse response);

    /**
     * 结算-新增，修改
     * @param financeYymm 结算月份
     * @param accountName 结算方式
     * @param vendorName  厂商
     * @return 结算结果
     */
    ResponseInfo tempAdd(String financeYymm, String accountName, String vendorName);

    /**
     * 取消结算-删除，修改
     *
     * @param slipNo 单据号码
     * @return 结算结果
     */
    ResponseInfo tempDel(String slipNo);

    /**
     * 结算明细查询 - 分页可条件查询
     *
     * @param request 查询条件
     * @param slipNo  单据号码
     * @param flag
     * @return 结算明细表
     */
    ResponseInfo detailQuery(PageParam request, String slipNo, Integer flag);

    /**
     * 结算明细查询导出
     * @param slipNo 单据号码
     * @param aggr 是否汇总
     */
    List<ApAmtDetailVO> detailQueryExport(String slipNo, boolean aggr);

    /**
     * 结算明细检核 - 修改
     * @param slipNos 单据号码
     * @param cfmFlag 检核标志
     * @return 修改结果
     */
    ResponseInfo cfm(List<String> slipNos, String cfmFlag);

    /**
     * 付款记录查询 - 条件查询
     * @param slipNo 单据号码
     * @return 付款记录表
     */
    ResponseInfo fkQuery(String slipNo);

    /**
     * 付款记录修改-修改
     *
     * @param request       修改条件
     * @param amtOld        旧金额
     * @param vendorNameOld
     * @return 修改结果
     */
    ResponseInfo fkUp(PcApAmtFk request, BigDecimal amtOld, String vendorNameOld);

    /**
     * 付款记录新增-新增
     * @param request 新增数据
     * @return 新增结果
     */
    ResponseInfo fkAdd(PcApAmtFk request);

    /**
     * 付款记录删除-删除
     *
     * @param id 单据号码
     * @return 删除结果
     */
    ResponseInfo fkDel(String id);

    /**
     * 尾款处理-新增
     * @param slipNos 单据号码
     * @return 新增结果
     */
    ResponseInfo aftPayProcess(List<String> slipNos);

    /**
     * 结算厂商回显
     *
     * @return 结算厂商列表
     */
    List<Map<String, String>> vendor(String financeYymm, String accountName);

    /**
     * 费用明细打印查询
     *
     * @param slipNo 订单号
     * @return 打印数据
     */
    Map<String, Integer> detailPrint(String slipNo);
}
